<?php

/**
 * Turmas
 * 
 * @author Milton Jr
 * @version 1.0
 * 
 */

require_once 'Zend/Db/Table/Abstract.php';

class Turmas extends Zend_Db_Table_Abstract {
	
	/** Nome da tabela no banco
	 * 
	 * @var string 
	 */
	protected $_name = 'turmas';
	
	/** Classes Dependentes
	 *  
  	 * @var array
	 */
	protected $_dependentTables = array ('Usuarios');
	
	/** Classes Referenciadas
	 * 
	 * @var array 
	 */
	protected $_referenceMap = array (
	'Usuario' => array ('columns' => 'id_professor', 
						'refTableClass' => 'Usuarios', 
						'refColumns' => 'id' )
	 );
	
	
	/**
	 * Insere o turma no banco
	 * 
	 * @param array dados
	 */
	public function insert(array $dados) {
		
		parent::insert ( $dados );
		
		$id_turma = $this->getAdapter ()->lastInsertId ();
		
		return $id_turma;
	}
	
	/**
	 * Atualiza a turma no banco
	 * 
	 * @param array dados, string where
	 */
	public function update(array $dados, $where) {
		
		$turma = $this->find ( $dados ['id'] )->current ();
		$id_turma = $turma->id;
		
		parent::update ( $dados, $where );
	
	}
	
	/**
	 * Deleta a turma do banco
	 * 
	 * @param int id
	 */
	public function delete($id) {
		parent::delete ( $this->getAdapter ()->quoteInto ( "id = ?", $id ) );
	}
	
	/**
	 * Pega todos as turmas
	 * 
	 * @param string ordem
	 * @return array
	 */
	public function findAll($ordem = '') {
		return $this->fetchAll ( null, $ordem );
	}
	
	public function findByFiltro($filtro, $ordem) {
		return $this->fetchAll ( $this->select()->order($filtro.' '.$ordem));
	}
	public function findAllByName() {
		return $this->fetchAll ( $this->select()->order('nome_da_turma asc'));
	}
	
	/**
	 * Pega as turmas pelo professor
	 * @param int id, string ordem
	 * @return Turmas
	 */
	public function findByProfessor($id, $filtro, $ordem) {
		return $this->fetchAll ( $this->select()->where($this->getAdapter ()->quoteInto ( 'id_professor = ?', $id ))->order($filtro.' '. $ordem ));
	}
	
}
